﻿#ifndef IMAGEVIEWER_H
#define IMAGEVIEWER_H

#include <QGraphicsView>
#include <QGraphicsPixmapItem>

/**
 * @brief 图片查看窗口类
 * 支持：
 *  - 鼠标滚轮缩放
 *  - 鼠标左键拖动平移
 *  - 双击恢复原比例显示
 */
class imageViewer : public QGraphicsView
{
    Q_OBJECT
public:
    explicit imageViewer(QWidget *parent = nullptr);
    bool loadImage(const QString &filePath);  // 加载图片文件

protected:
    // 事件重载（用于实现缩放、拖动等交互）
    void wheelEvent(QWheelEvent *event) override;         // 滚轮缩放
    void mousePressEvent(QMouseEvent *event) override;    // 按下鼠标开始拖动
    void mouseMoveEvent(QMouseEvent *event) override;     // 拖动中
    void mouseReleaseEvent(QMouseEvent *event) override;  // 拖动结束
    void mouseDoubleClickEvent(QMouseEvent *event) override; // 双击复位

private:
    QGraphicsScene *m_scene;          // 场景（用来放图片）
    QGraphicsPixmapItem *m_pixmapItem;// 图片项
    bool m_panning;                   // 是否正在拖动
    QPoint m_panStart;                // 拖动起点
    int m_zoom;                       // 当前缩放等级
    const int m_zoomMin = -10;        // 最小缩放次数
    const int m_zoomMax = 20;         // 最大缩放次数
    const qreal m_zoomStep = 1.25;    // 每次缩放比例（1.25倍）
};

#endif // IMAGEVIEWER_H
